#  创建一个模拟用户登录的类，用户提供登录login_url和登录的用户uid及密码passowrd,登录成功后，
# 返回登录成功的cookie,不成功则提示登录失败
import requests

class UserLogin:
    """
    模拟用户登录的类
    用户提供登录login_url和登录的用户参数parameter,
    登录成功后返回登录成功的cookie,不成功则提示登录失败
    """
    
    def __init__(self, login_url, parameter):
        """
        初始化登录信息
        
        Args:
            login_url (str): 登录URL
            parameter (dict): 登录参数，包含用户名/用户ID和密码等键值对
        """
        self.login_url = login_url
        self.parameter = parameter
        self.session = requests.Session()
        self.cookies = None
    
    def login(self):
        """
        执行登录操作
        
        Returns:
            dict or str: 登录成功返回cookie字典，失败返回错误提示信息
        """
        try:
            # 准备登录数据
            login_data = self.parameter
            
            # 发送登录请求
            response = self.session.post(self.login_url, data=login_data)
            response.raise_for_status()  # 检查请求是否成功
            
            # 获取cookie
            if self.session.cookies:
                self.cookies = self.session.cookies.get_dict()
                return self.cookies
            else:
                return "登录失败：未获取到有效cookie"
                
        except requests.exceptions.RequestException as e:
            return f"登录失败：网络请求错误 - {str(e)}"
        except Exception as e:
            return f"登录失败：未知错误 - {str(e)}"
    
 


# 使用示例
if __name__ == "__main__":
    # 示例URL和登录信息（实际使用时需要替换为真实的URL和凭据）
    example_url = "https://example.com/login"
    example_parameter = {
        'uid': 'test_user',
        'password': 'test_password'
    }
    
    # 创建登录实例并执行登录
    login_instance = UserLogin(example_url, example_parameter)
    result = login_instance.login()
    
    # 处理登录结果
    if isinstance(result, dict):
        print("登录成功！获取到的cookie:")
        for key, value in result.items():
            print(f"{key}: {value}")
    else:
        print(result)